#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int SLDataType;
typedef struct ListNode//双向链表
{
	SLDataType val;
	ListNode* prev;
	ListNode* next;
}ListNode;
//初始化
ListNode* ListInit();
void ListPrint(ListNode* plist);//打印
void ListDestroy(ListNode** pplist);//销毁链表
void ListClear(ListNode* plist);//保存头节点地销毁
void ListPushBack(ListNode* plist, SLDataType x);//尾插
void ListPopBack(ListNode* plist);//尾删
void ListInsert(ListNode* pos, SLDataType x);//在pos前面插入
void ListErase(ListNode* pos);//删除pos位置的节点
void ListPushFront(ListNode* plist, SLDataType x);//头插
void ListPopFront(ListNode* plist);//头删
ListNode* ListFind(ListNode* plist, SLDataType x);//查找
ListNode* BuyListNode(SLDataType x);//申请节点